import tkinter as tk



class DrawApp:
    def __init__(self, root):
        self.root = root
        self.root.title("鼠标拖动绘图工具")
        self.root.geometry("800x600")  # 窗口大小

        # 初始化绘图参数
        self.last_x = None  # 上一次鼠标位置x
        self.last_y = None  # 上一次鼠标位置y
        self.current_color = "black"  # 默认绘图颜色
        self.line_width = 2  # 默认线条宽度

        # 创建画布（白色背景）
        self.canvas = tk.Canvas(root, bg="white", width=800, height=500)
        self.canvas.pack(pady=10)

        # 创建控制区（清除按钮）
        control_frame = tk.Frame(root)  # Frame表示一个区域，可以放置控件
        control_frame.pack(pady=5)  # 填充布局


        # 清除画布按钮
        self.clear_btn = tk.Button(
            control_frame,
            text="清除画布",
            command=self.clear_canvas,
            width=15
        )
        self.clear_btn.grid(row=0, column=1, padx=10)

        # 绑定鼠标事件
        self.canvas.bind("<B1-Motion>", self.draw)  # 按住左键拖动时绘图
        self.canvas.bind("<ButtonRelease-1>", self.reset_last_pos)  # 释放左键时重置起始位置

    def draw(self, event):
        """鼠标拖动时绘制线条"""
        if self.last_x and self.last_y:
            # 从上次位置到当前位置绘制线条
            self.canvas.create_line(
                self.last_x, self.last_y,  # 起点
                event.x, event.y,  # 终点
                fill=self.current_color,  # 线条颜色
                width=self.line_width,  # 线条宽度
                smooth=True,  # 平滑曲线（可选）
                capstyle=tk.ROUND  # 线条端点圆润
            )
        # 更新上次位置为当前位置
        self.last_x = event.x
        self.last_y = event.y

    def reset_last_pos(self, event):
        """释放鼠标时重置起始位置"""
        self.last_x = None
        self.last_y = None



    def clear_canvas(self):
        """清除画布上所有内容"""
        self.canvas.delete("all")


if __name__ == "__main__":  # 当脚本被直接运行时，执行以下代码
    root = tk.Tk()
    app = DrawApp(root)
    root.mainloop()